gtk: don't always invalidate spinbuttons on each leave_notify()
authorMichael Natterer <mitch@gimp.org>
Wed, 16 Feb 2011 17:39:33 +0000 (18:39 +0100)
committerMichael Natterer <mitch@gimp.org>
Wed, 16 Feb 2011 17:42:18 +0000 (18:42 +0100)
but only when an arrow was prelighted. Also, chain up unconditonally
in enter_notify() and leave_notify() because GtkEntry implements them
too.

gtk/gtkspinbutton.c

index b1cbf798c4327165043422bb54a72a2e7e982ae4..3d0875390afd5ff3ec77e285236b8589b8f3fef2 100644 (file)
@@ -1115,10 +1115,7 @@ gtk_spin_button_enter_notify (GtkWidget        *widget,
       gtk_widget_queue_draw (GTK_WIDGET (spin));
     }
 
-  if (GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->enter_notify_event)
-    return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->enter_notify_event (widget, event);
-
-  return FALSE;
+  return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->enter_notify_event (widget, event);
 }
 
 static gint
@@ -1128,13 +1125,13 @@ gtk_spin_button_leave_notify (GtkWidget        *widget,
   GtkSpinButton *spin = GTK_SPIN_BUTTON (widget);
   GtkSpinButtonPrivate *priv = spin->priv;
 
-  priv->in_child = NO_ARROW;
-  gtk_widget_queue_draw (GTK_WIDGET (spin));
-
-  if (GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->leave_notify_event)
-    return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->leave_notify_event (widget, event);
+  if (priv->in_child != NO_ARROW)
+    {
+      priv->in_child = NO_ARROW;
+      gtk_widget_queue_draw (GTK_WIDGET (spin));
+    }
 
-  return FALSE;
+  return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->leave_notify_event (widget, event);
 }
 
 static gint